package com.xiguthings.waka.springtask;

import com.xiguthings.waka.po.UserShareExample;
import com.xiguthings.waka.service.sysfile.ISysFileService;
import com.xiguthings.waka.service.usershare.IUserShareService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

/**
 * CRON表达式 含义<br>
 * "0 0 12 * * ?" 每天中午十二点触发<br>
 * "0 15 10 ? * *" 每天早上10：15触发<br>
 * "0 15 10 * * ?" 每天早上10：15触发<br>
 * "0 15 10 * * ? *" 每天早上10：15触发 <br>
 * "0 15 10 * * ? 2005" 2005年的每天早上10：15触发<br>
 * "0 * 14 * * ?" 每天从下午2点开始到2点59分每分钟一次触发<br>
 * "0 0/5 14 * * ?" 每天从下午2点开始到2：55分结束每5分钟一次触发 <br>
 * "0 0/5 14,18 * * ?" 每天的下午2点至2：55和6点至6点55分两个时间段内每5分钟一次触发<br>
 * "0 0-5 14 * * ?" 每天14:00至14:05每分钟一次触发<br>
 * "0 10,44 14 ? 3 WED" 三月的每周三的14：10和14：44触发 <br>
 * "0 15 10 ? * MON-FRI" 每个周一、周二、周三、周四、周五的10：15触发<br>
 */
@Component
public class TimedTask {

    @Resource
    private IUserShareService userShareService;

    @Resource
    private ISysFileService sysFileService;

    private final String resetUserShareTime = "0 0 0 * * ?";// 重置用户分享后获得奖励的时间（每天00点执行）

    private final String clearNoRelationFileTime = "0 0 0 L * ? *";// 清理没有关联对象的文件时间(每月1日的00点执行)

    public Logger log = LoggerFactory.getLogger(TimedTask.class);

    public TimedTask() {
        super();
        log.info("定时任务启动成功.....");
    }

    /**
     * 重置用户分享
     *
     * @throws Exception
     */
    @Scheduled(cron = resetUserShareTime)
    public void resetUserShare() throws Exception {// 定时器的任务方法不能有返回值
        userShareService.deleteByExample(new UserShareExample());
    }

//    /**
//     * 清理无主的文件
//     *
//     * @throws Exception
//     */
//    @Scheduled(cron = clearNoRelationFileTime)
//    public void clearNoRelationFile() throws Exception {
//
//        SysFileExample example = new SysFileExample();
//        //  查询relation是null的
//        SysFileExample.Criteria criteria = example.createCriteria();
//        criteria.andRelationIdIsNull();
//        List<SysFile> list1 = sysFileService.selectByExample(example);
//        if (list1 != null) {
//            for (SysFile sysFile : list1) {
//                sysFileService.deleteByPrimaryKey(sysFile.getFileId());
//            }
//        }
//
//        //  查询relation是""的
//        example.clear();
//        criteria = example.createCriteria();
//        criteria.andRelationIdEqualTo("");
//        List<SysFile> emptyList = sysFileService.selectByExample(example);
//        List<SysFile> list2 = sysFileService.selectByExample(example);
//        if (list2 != null) {
//            for (SysFile sysFile : list2) {
//                sysFileService.deleteByPrimaryKey(sysFile.getFileId());
//            }
//        }
//
//
//    }


}
